//package elephant.servers.gameserver.connect;
//
//import java.util.Date;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import elephant.servers.gameserver.codec.proto.ProtoMessage;
//import elephant.servers.gameserver.core.GameRequestDispatch;
//import elephant.servers.gameserver.session.GameSession;
//import elephant.servers.gameserver.session.GameSessionManager;
//import io.netty.channel.ChannelHandler.Sharable;
//import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.SimpleChannelInboundHandler;
//import io.netty.handler.timeout.IdleStateEvent;
//import io.netty.util.AttributeKey;
//
///**
// * 
// * @author icecooly
// *
// */
//@Sharable
//public class GameServerProtoHandler extends SimpleChannelInboundHandler<ProtoMessage> {
//	//
//	private static final AttributeKey<GameSession> SESSION_KEY=
//			AttributeKey.valueOf("s");
//	//
//	private static Logger logger=LoggerFactory.getLogger(GameServerProtoHandler.class);
//	//
//	private GameSessionManager sessionManager;
//    @SuppressWarnings("unused")
//	private GameRequestDispatch requestDispatcher;
//	//
//	public GameServerProtoHandler(GameSessionManager sessionManager,
//			GameRequestDispatch requestDispatcher){
//		this.sessionManager=sessionManager;
//    	this.requestDispatcher=requestDispatcher;
//	}
//	//
//    @Override
//	public void channelActive(ChannelHandlerContext ctx) throws Exception {
//    	GameSession session=new GameSession(ctx.channel());
//		ctx.channel().attr(SESSION_KEY).set(session);
//		sessionManager.sessionCreated(session);
//	}
//    
//    @Override
//    public void channelInactive(ChannelHandlerContext ctx) throws Exception {
//    	GameSession session=ctx.channel().attr(SESSION_KEY).get();
//    	sessionManager.sessionDisconnected(session);
//    	if(logger.isDebugEnabled()){
//    		logger.debug("channelInactive "+ctx.channel());
//    	}
//	}
//	@Override
//	public void userEventTriggered(ChannelHandlerContext ctx, Object evt)
//			throws Exception {
//		if(evt instanceof IdleStateEvent){  
//			GameSession session=ctx.channel().attr(SESSION_KEY).get();
//			session.kick("user idle 5 minutes,last access:"+
//									new Date(session.getLastAccessTime()));
//        }    
//	}
//	
//	protected void messageReceived(ChannelHandlerContext ctx,ProtoMessage req) throws Exception {
//		
//	}
//	
//	@Override
//	protected void channelRead0(ChannelHandlerContext ctx, ProtoMessage req) throws Exception {
//		messageReceived(ctx, req);
//	}
//}
//
